<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /*
        Object.keys(obj)用于获取对象自身所有的属性名
        效果类似于for...in
        返回一个由属性名组成的数组
        */
       var obj = {
           id: 1,
           pname :'小米',
           price: 1999,
           num:2000
       };
      var arr = Object.keys(obj);
      console.log(arr);
      arr.forEach(function(value){
          console.log(value);
      })
      //Object.defineProperty（）定义新属性和修改原有属性
      //语法: Object.defineProperty(obj,prop,descriptor)
      //obj:必须。目标对象
      //prop：必须。需定义或修改的属性名
      //descriptor：必须。目标属性所拥有的特性 一对象的形势{}书写
      Object.defineProperty(obj,'pname',{
          value:'红米'
      });
      console.log(obj);
      Object.defineProperty(obj,'id',{
          writable:false //true 允许修改  false 不允许修改 默认值为false
      }); 
      console.log(obj);

      Object.defineProperty(obj,'address',{
          value: '中国山东',
          enumerable:false , //enumerable目标属性是否可以被枚举（能不能遍历）  true 允许遍历  false 不允许遍历 默认false
          configurable:false // configurable目标属性是否可以被删除或是否可以再次修改特性  true 允许修改  false 不允许 默认值为false
        });
      console.log(obj);
      
    </script>
</body>
</html>